takeWhile(predict)
式利用predict函示
來定義條件式,一旦符合條件,就不再拿資料了。takeUntil
跟takeWhile
概念上接近,但使用上有點不同,趕緊來看看!takeUntil(observable)
:括號內主要是一個observable
,也就是彈珠圖上所稱的second observable
(first observable
自然是外層的source observable
囉!),當second observable
被觸發開始傳送值,就結束資料傳遞,有點抽象,我們來看個例子。import { interval, fromEvent, takeUntil, tap } from 'rxjs';
// case1: takeUntil + click event
console.log('=== case1: takeUntil + click event ===');
// second observable: click
const click$ = fromEvent(document, 'click').pipe(
tap(() => console.log('[2nd]:clicked!'))
);
// run first observable
interval(1000)
.pipe(takeUntil(click$)) //<-- 將second observable提供給takeUntil,一旦click發出值,立即結束
.subscribe({
next: console.log,
complete: () => console.log('[1st]:completed!'),
});
takeWhile
時,我們需要提供一個second observable
,回想一下這句話~當點擊時,結束資料傳遞
,這代表說,我需要一個偵測點擊事件
,所以fromEvent(document, 'click')
建立後,就能提供給takeUntil
當作條件判斷式囉[2nd]:clicked!
: 代表second observable
被觸發,開始傳遞值(event資料)。[1st]:completed
: 代表takeUntil
偵測到second observable
,因此結束。takeWhile(predict_func)
:宣告一個predict_func
來作條件式,符合條件就取值。takeUntil(2nd observable)
:利用
2nd observable
當作takeUntil
觸發的條件式。
當括號內的2nd observable
開始傳遞值,takeUntil
會呼叫主要的observable,也就是1st observable結束。
來到了第20天,剩下最後的1/3,不遠了~繼續加油!